// Copyright DustedPixels.com 2008. All rights reserved.

package com.dustedpixels.ooops;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

/**
 * Annotates methods and fields to be inlined by the Injector.
 * 
 * For methods, their body will be injected in all places it's called. Following
 * methods can be injected:
 * <ul>
 * <li>private methods
 * <li>static methods
 * <li>constructors
 * <li>final methods
 * <li>methods on final classes
 * </ul>
 * All other methods can not be inlined.
 * 
 * For fields, the full object being stored in that field will be injected.
 * In order for the field to be injected, following conditions must be satisfied:
 * <ul>
 * <li>field must not be static
 * <li>field must be private and final
 * <li>the object stored in the field must not be exposed outside of the class
 * <li>field must only be accessed directly
 * </ul>
 * 
 * @author micapolos@gmail.com (Michal Pociecha-Los)
 */
@Target({ElementType.METHOD, ElementType.FIELD})
@Documented
public @interface Inline {
  
}
